package com.foreknow.demo1;

import java.util.Scanner;

/**
 * 运算符
 * 1. 算术运算符 + - * / % ++ --
 * ++/-- 表示自增/自减  使用方法： 可以在变量前后来使用
 * 例如 ：
 * a++ 先运算然后a自增加1
 * ++a  a-- --a
 *
 * 2. 赋值运算符 =     复合赋值运算符 +=  -=  *=  /=  %=  例如： a+=b  a = a + b
 *
 * 3. 关系运算符（比较） > >= < <= !=（不等于） ==   例如： a > b   表达式的最终类型为boolean类型
 *
 * 4.  逻辑运算符和表达式  &&（ 与 ）  ||( 或 )   ! ( 非 )
 *     运算规则：   a && b   只有a b 同时为true的时候 最后的结果才为true
 *                 a || b   a和 b只要有一个为true 最后的结果就为true
 *                 !a  !b   取反
 * 5. 三目条件运算符(三元运算符)  例如 int x = (逻辑运算)？ a : b   注意： a , b, x的类型一定要相同
 */
public class OperatorDemo {
    public static void main(String[] args) {

        //如何接收用户的输入
        Scanner input = new Scanner(System.in);
        System.out.println("请输入一个整数Num：");
        int i1 = input.nextInt(); //从控制台接收用户输入的数据并赋值给变量i

        char c2 = (i1 % 2 == 0)? '是':'否';
        System.out.println(c2);

        System.out.println("---------------------------------------------------");
        boolean aa = true;
        boolean bb = false;
        boolean cc = aa && bb;

        System.out.println(cc);

        //短路:如果能通过第一个表达式的结果判断出最终的结果的话，那么第二个表达将不再执行了。
        //企业笔试题：  &(位与) 与 &&(短路与) 的区别
        int i = 5;
        boolean x = (i++ > 5) && (++i < 6);
        System.out.println(x);
        System.out.println(i);

        System.out.println("-----------------------------------------------");
        int a1 = 3;
        int b1 = 5;
        // boolean isRight = a1 > b1;  //常用写法
        System.out.println(a1 > b1);
        System.out.println(a1 >= b1);
        System.out.println(a1 < b1);
        System.out.println(a1 <= b1);
        System.out.println(a1 != b1);
        System.out.println(a1 == b1);


        System.out.println("-------------------------------------------");

        System.out.println(b1 += a1);  // b1  = b1 + a1
        System.out.println(b1 -= a1);  // b1  = b1 - a1
        System.out.println(b1 *= a1);  // b1  = b1 * a1
        System.out.println(b1 /= a1);  // b1  = b1 / a1
        System.out.println(b1 %= a1);  // b1  = b1 % a1

        short s = 35;
        s += 1; //如果 s = s + 1(报错的)  s = (short) (s + 1) 手动强制类型转换  += 它可以自动处理类型转换的问题

        System.out.println("----------------------------------------------------------");

        int a = 5;
        int b = 2;
        int c = 1;
        System.out.println(a + b);
        System.out.println(a - b);
        System.out.println(a * b);
        System.out.println(a / b);
        System.out.println(a % b);
        //        double d1 = 10.0;
        //        double d2 = 3.0;
        //        System.out.println(d1/d2);
        System.out.println("------------------------------------------------------------------------");
        int d = c++; //先将c的值赋值给d,然后c自增加1
        // int d = ++c; //c自增加1，然后再参与运算
        System.out.println(d);
        System.out.println(c);

        int e = 12;
        int f = 13;
        int g = 14;
        int k = (e++)+(--e)+(f++)+(--g);
        System.out.println(k);

    }
}
